#include "login_widget.h"
#include "ui_login_widget.h"
#include "database.h"
#include <QMessageBox>
#include "command.h"

login_widget::login_widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::login_widget)
{
    ui->setupUi(this);
    this->setWindowIcon(QIcon(":/sources/image/WindowIcon.png"));
    this->setWindowTitle("登陆");
//    this->setWindowFlags(Qt::FramelessWindowHint);
    ui->le_Number->setPlaceholderText("账号");
    ui->le_password->setPlaceholderText("密码");



    //// 创建通信类，并连接服务器
    m_msgSocket = new msgsocket();
    /// 连接服务器
    if (!m_msgSocket->m_tcpSocket->isOpen())
    {
        m_msgSocket->ConnectToHost("localhost", 55555);
//        m_tcpSocket->waitForConnected(100);
    }
    connect(m_msgSocket, SIGNAL(signalStatus(quint8)),
            this, SLOT(SltTcpStatus(quint8)));

}

login_widget::~login_widget()
{
    delete ui;
}


/// 登陆按钮槽
/// 功能：从数据库获取验证结果，验证成功发送显示客户端界面信号
void login_widget::on_pb_login_clicked()
{
   /// 发送登陆信息到服务器，请求服务器验证
   ///
   /// 如果没有链接上服务器，此时进行一次链接
   if (!m_msgSocket->m_tcpSocket->isOpen()) {
            m_msgSocket->ConnectToHost("localhost", 55555);
            QMessageBox::warning(this, tr("请等待"),tr("未连接服务器！"));
            return;
        }
        // 构建 Json 对象
        QJsonObject json;
        json.insert("name", ui->le_Number->text());
        json.insert("passwd", ui->le_password->text());
        //// 发送登陆消息到服务器
        qDebug() << "向服务器请求验证用户信息......";
        m_msgSocket->SlotSendMessage(Login, json);
}


/// 注册按钮槽
void login_widget::on_pb_logon_clicked()
{
    /// 发送登陆信息到服务器，请求服务器注册
    ///
    /// 如果没有链接上服务器，此时进行一次链接
    if (!m_msgSocket->m_tcpSocket->isOpen()) {
             m_msgSocket->ConnectToHost("localhost", 55555);
             QMessageBox::warning(this, tr("请等待"),tr("未连接服务器！"));
             return;
         }
         // 构建 Json 对象
         QJsonObject json;
         json.insert("name", ui->le_Number->text());
         json.insert("passwd", ui->le_password->text());
         //// 发送登陆消息到服务器
         qDebug() << "向服务器请求验证用户信息......";
         m_msgSocket->SlotSendMessage(Register, json);
}


////  登陆、注册结果
///   来自于服务器判断的结果
void login_widget::SltTcpStatus(const quint8 &state)
{
    qDebug() << "login_widget::SltTcpStatus登陆注册槽函数..."  << state;
    switch (state) {
//    case DisConnectedHost:
//        m_bConnected = false;
//        ui->labelWinTitle->setText(tr("服务器已断开"));
//        break;
//    case ConnectedHost: // 登陆验证成功
//        m_bConnected = true;
//        ui->labelWinTitle->setText(tr("已连接服务器"));
//        break;
    case LoginSuccess:
    {
        emit loginSignalTOcilent(m_msgSocket,ui->le_Number->text());
        break;
    }
    case LoginPasswdError:
    {
        QMessageBox::warning(this, tr("警告"),tr("密码错误！"));
        break;
    }
    case LoginNotFound:
    {
        QMessageBox::warning(this, tr("错误"),tr("账号不存在！"));
        break;
    }
    case RegisterOk:
    {
        QMessageBox msgBox;
        msgBox.setWindowTitle(" ");
        msgBox.setText("注册成功！");
        msgBox.setWindowIcon(QIcon(":/sources/image/成功.png"));
        msgBox.exec();
        break;
    }
    case RegisterFailed:
    {
        QMessageBox::warning(this, tr("请登录"),tr("账号已存在！"));
        break;
    }
    default:
        break;
    }
}

//自动登录选项
void login_widget::on_cb_isAutoLogin_clicked()
{
    if(ui->cb_isAutoLogin->isChecked())
    {
//        emit ui->pb_login->clicked();
    }
}
